home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 286_01 / execfunc.asm < prev    next >
Assembly Source File  |  1989-05-23  |  4KB  |  118 lines

  1. oa      equ     4
  2.  
  3. DGROUP  GROUP   _DATA
  4. _DATA   segment word public 'DATA'
  5.         assume  ds:DGROUP
  6. funaddr dw      _TEXT:_Arc1
  7.         dw      _TEXT:_Arc2
  8.         dw      _TEXT:_ArcPoint
  9.         dw      _TEXT:_BlockCopy
  10.         dw      _TEXT:_BlockLoad
  11.         dw      _TEXT:_BlockSave
  12.         dw      _TEXT:_Box
  13.         dw      _TEXT:_Circle
  14.         dw      _TEXT:_CreateFrame
  15.         dw      _TEXT:_Dot
  16.         dw      _TEXT:_Draw
  17.         dw      _TEXT:_Earc1
  18.         dw      _TEXT:_Earc2
  19.         dw      _TEXT:_Ellipse
  20.         dw      _TEXT:_EnvRsto
  21.         dw      _TEXT:_EnvSave
  22.         dw      _TEXT:_FillCircle
  23.         dw      _TEXT:_FillEllipse
  24.         dw      _TEXT:_HorzLine
  25.         dw      _TEXT:_Line
  26.         dw      _TEXT:_LoadFont
  27.         dw      _TEXT:_NextXY
  28.         dw      _TEXT:_PatternFill
  29.         dw      _TEXT:_PlotType
  30.         dw      _TEXT:_PrintFrame
  31.         dw      _TEXT:_PrintPage
  32.         dw      _TEXT:_ReadStr
  33.         dw      _TEXT:_Rectangle
  34.         dw      _TEXT:_RelOrg
  35.         dw      _TEXT:_RemvFont
  36.         dw      _TEXT:_RemvFrame
  37.         dw      _TEXT:_ResetWin
  38.         dw      _TEXT:_SelectFont
  39.         dw      _TEXT:_SelectFrame
  40.         dw      _TEXT:_SetOrg
  41.         dw      _TEXT:_SetStyle
  42.         dw      _TEXT:_SetWin
  43.         dw      _TEXT:_SolidFill
  44.         dw      _TEXT:_VertLine
  45.         dw      _TEXT:_WriteStr
  46.         dw      _TEXT:_XHLine
  47. _DATA   ends
  48.  
  49. _TEXT   segment byte public 'CODE'
  50.         assume  cs:_TEXT,ds:DGROUP
  51.  
  52.         public  _execfunc
  53.  
  54.         extrn   _Arc1:near, _Box:near, _Circle:near,
  55.         extrn   _CreateFrame:near, _HorzLine:near, _PrintFrame:near
  56.         extrn   _Dot:near, _Earc1:near, _Ellipse:near
  57.         extrn   _Line:near, _LoadFont:near, _PlotType:near
  58.         extrn   _Rectangle:near, _RelOrg:near, _RemvFont:near
  59.         extrn   _RemvFrame:near, _SetStyle:near, _SelectFont:near
  60.         extrn   _ResetWin:near, _SelectFrame:near, _SetOrg:near
  61.         extrn   _SetWin:near, _VertLine:near, _WriteStr:near
  62.         extrn   _Draw:near, _FillCircle:near, _FillEllipse:near
  63.         extrn   _Arc2:near, _Earc2:near, _PrintPage:near
  64.         extrn   _EnvSave:near, _EnvRsto:near, _BlockCopy:near
  65.         extrn   _BlockLoad:near, _BlockSave:near, _ArcPoint:near
  66.         extrn   _SolidFill:near, _PatternFill:near, _ReadStr:near
  67.         extrn   _XHLine:near, _NextXY:near
  68.  
  69. _execfunc proc   near
  70.         push    bp
  71.         mov     bp,sp
  72.         mov     bx,[bp+oa+2]
  73.         test    bx,bx
  74.         jz      short ef4
  75.         mov     cx,bx
  76.         dec     bx
  77.         shl     bx,1 
  78.         shl     bx,1
  79.         add     bx,[bp+oa+4]
  80. ef1:    mov     ax,[bx]
  81.         cmp     ax,1    ; INTG
  82.         jnz     short ef010
  83.         mov     ax,[bx+2]
  84.         push    ax
  85.         jmp     short ef900
  86. ef010:  cmp     ax,2    ; STRG
  87.         jnz     short ef020
  88.         mov     ax,[bx+2]
  89.         push    ax
  90.         jmp     ef900
  91. ef020:  sub     ax,ax
  92.         push    ax
  93. ef900:  sub     bx,4
  94.         loop    ef1
  95. ef4:    mov     bx,[bp+oa]
  96.         shl     bx,1
  97.         call    funaddr[bx]
  98.         mov     sp,bp
  99.         mov     cx,[bp+oa+6]
  100.         mov     bx,[bp+oa+8]
  101.         mov     [bx],cx
  102.         cmp     cx,1
  103.         jnz     ef110
  104.         mov     [bx+2],ax
  105.         jmp     ef190
  106. ef110:  cmp     cx,2
  107.         jnz     ef120
  108.         mov     [bx+2],ax
  109.         jmp     ef190
  110. ef120:  mov     [bx],word ptr 0
  111. ef190:  pop     bp
  112.         ret
  113. _execfunc endp
  114.  
  115. _TEXT   ends
  116.         end
  117.  
  118.